一般我們在寫 HTML 時最上面都會有一行:
<!DOCTYPE html>
<!DOCTYPE html>
並不是 HTML 標籤,這行的目的是為了告訴瀏覽器當前的文件是什麼類型,這種宣告文件類型稱作 DTD(Document Type Declaration)。
如果我們沒有宣告這份文件的類型、或是宣告錯誤類型,可能會導致瀏覽器的渲染方式改變,例如 CSS 開始不聽你的話。會造成這樣的原因是因為瀏覽器的排版引擎不同,而目前的瀏覽器排版引擎有兩種:
Quirks mode
:怪異模式Standards mode
:標準模式在 HTML5 中只有 <!DOCTYPE html>
一種宣告,只要在開頭添加後就會進入標準模式,反之不宣告就會進入怪異模式。
想要確認當前模式可以在 console 中輸入:
document.compatMode
這時候會出現兩種結果,分別是:
CSS1Compat
:代表標準模式(Quirks mode)。BackCompat
:代表怪異模式(Standards mode)。沒錯,我們輸入下面幾種都不會影響宣告,因為沒有區分大小寫的問題。
<!DOCTYPE html>
<!DocType html>
<!Doctype html>
<!doctype html>
HTML 4.01 Strict
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "//www.w3.org/TR/html4/strict.dtd">
HTML 4.01 Transitional
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "//www.w3.org/TR/html4/loose.dtd">
HTML 4.01 Frameset
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "//www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0 Strict
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.0 Transitional
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 Frameset
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "//www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "//www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">